<?php
/**
 * 生成SQL语句, 根据用户选择的方式
 *
 */
 include('mod_config.php');
 //Auth_Mod('dbBackup');

 if ($_REQUEST['action'] == 'backup')
 {
   /* 记录方式 */
    $Default_Type = 0;  // 0 直接显示在该页面 1 另存为文本 2 另存为压缩文件
   /* 另存为文件 */
	if (isset($_REQUEST['savefile']))
    {
	 $Default_Type = 1; 
	 $_REQUEST['filename'] = trim($_REQUEST['filename']);
     $sql_name = empty($_REQUEST['filename']) ? (date("Ymd")) : ($_REQUEST['filename']);
	 /* 判断保存文件的格式: 文本, 压缩 */
	  if ('yes' == $_REQUEST['zip'])
	  {
        include($conf["fun_path"].'phpzip.php');	  
	    $zip = new PHPZip;
	    $vol_size = 2048 * 1024;
	    $sql_name = $sql_name . '.zip';
		$Default_Type = 2;
	  }
	  else
	  {
	    $sql_name = $sql_name . '.sql';
	  }
	}
    $sql = '';
    $i= 1;
    $error = 0;

   /* 用户选择的类型: full 全部备份, custom 自定义备份 */
    if ($_REQUEST['type'] == 'full')
	{
       $tables = getTables($conf['Database']);
	}
	else
	{
	   $tables = $_REQUEST['tbl_name'];
	   if (empty($tables))
	   {
		 MyNotice('請選擇數據表');
		 exit;
	   }
	}

   /* 生成SQL语句 */
    foreach ($tables as $table)
    {        
        if (! get_table_df($table, $sql))
        {
            $error = 1;
            break;
        }
        
        if (! get_table_content($table, $sql, 0))
        {
            $error = 1;
            break;
        }
   
        if (strlen($sql) >$vol_size )
        {
		  if ($Default_Type == 2)
		  {
		   /* 分为几个文件存放 */
            $zip -> add_file($sql, 'backup_' . $i.'.sql');
            $sql = '';
            $i++;
		  }
        }
    } 

    if ($Default_Type == 2)
    {
	  if ($i == 1)
	  {
        $zip -> add_file($sql, 'backup.sql');
	  }
    }
    
    if ($error)
    {
        echo("fail");
        exit;
    }

   /* 另存为文件 */
	if ($Default_Type > 0)
    {
      header("Content-disposition: filename=$sql_name");
      header("Content-type: unknown/unknown");
	 /* 文本 */
	  if ($Default_Type == 1)
	  {
	    echo $sql;
	  }
	  else    //压缩文件
	  {
        echo($zip -> file());
	  }
	  exit;
	}
   
  //Tpl
   $tpl -> set_file("main", "backup.htm");
   $tpl -> set_var('CONTENT', $sql);
   $tpl -> parse("Output",'main');
   $tpl -> p("Output");
 }
?>